package com.igroupes.ovineherd.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.igroupes.ovineherd.enums.SystemConfigKey;

import java.util.Map;

public interface SystemConfigManager {
    Map<String, String> getConfig(String category);

    String getString(String category, String key);

    String getString(SystemConfigKey key);

    String getStringOrDefault(String category, String key, String defaultValue);

    String getStringOrDefault(SystemConfigKey key, String defaultValue);

    int getInt(String category, String key);

    int getInt(SystemConfigKey key);

    int getIntOrDefault(String category, String key, int defaultValue);

    int getIntOrDefault(SystemConfigKey key, int defaultValue);

    long getLong(String category, String key);

    long getLongOrDefault(String category, String key, long defaultValue);

    long getLong(SystemConfigKey key);

    long getLongOrDefault(SystemConfigKey key, long defaultValue);

    double getDouble(String category, String key);

    double getDoubleOrDefault(String category, String key, double defaultValue);

    double getDouble(SystemConfigKey key);

    double getDoubleOrDefault(SystemConfigKey key, double defaultValue);

    JSONObject getJSONObject(String category, String key);

    JSONObject getJSONObjectOrDefault(String category, String key, JSONObject defaultValue);

    JSONObject getJSONObject(SystemConfigKey key);

    JSONObject getJSONObject(SystemConfigKey key, JSONObject defaultValue);

    JSONArray getJSONArray(String category, String key);

    JSONArray getJSONArrayOrDefault(String category, String key, JSONArray defaultValue);

    JSONArray getJSONArray(SystemConfigKey key);

    JSONArray getJSONArrayOrDefault(SystemConfigKey key, JSONArray defaultValue);


}
